﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace CultuRAM.Models
{
    [Table("Entities")]
    public class Entity
    {
        [Key]
        [Display(Name = "ID")]
        public int EntityId { get; set; }

        [Required(ErrorMessage = "O campo {0} é de preenchimento obrigatório!")]
        [Display(Name = "Nome da Entidade")]
        public string Name { get; set; }
        
        [Display(Name = "Morada")]
        public string Address { get; set; }
        
        [Display(Name = "Código Postal")]
        public string PostalCode { get; set; }

        [StringLength(9, ErrorMessage = "Insisra um número de Telefone no formato correto!")]
        [Display(Name = "Telefone")]
        public string Phone { get; set; }

        [StringLength(9, ErrorMessage = "Insisra um número de Fax no formato correto!")]
        [Display(Name = "Fax")]
        public string Fax { get; set; }

        [StringLength(9, ErrorMessage = "Insisra um número de Telemóvel no formato correto!")]
        [Display(Name = "Telemóvel")]
        public string CellPhone { get; set; }

        //[Required(ErrorMessage = "Por favor, insira um Email válido.")]
        [DataType(DataType.EmailAddress)]
        [RegularExpression(@"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessage = "Por favor, insira um {0} válido.")]
        [Required(ErrorMessage = "O campo {0} é de preenchimento obrigatório!")]
        [Display(Name = "Email")]
        public string Email { get; set; }

        [Required(ErrorMessage = "O campo {0} é de preenchimento obrigatório!")]
        [Display(Name = "Responsável")]
        public string Responsible { get; set; }

        [Required(ErrorMessage = "O campo {0} é de preenchimento obrigatório!")]
        [Display(Name = "Contato do Responsável")]
        public string ResponsibleContact { get; set; }
        
        [Display(Name = "Logotipo")]
        public string Logo { get; set; }

        [Required(ErrorMessage = "O campo {0} é de preenchimento obrigatório!")]
        [Display(Name = "Município")]
        public int CityId { get; set; }

        [Display(Name = "Município")]
        [ForeignKey("CityId")]
        public virtual City City { get; set; }

        [Required(ErrorMessage = "O campo {0} é de preenchimento obrigatório!")]
        [Display(Name = "Tipo de Entidade")]
        public int EntityTypeId { get; set; }


        [Display(Name = "Tipo de Entidade")]
        [ForeignKey("EntityTypeId")]
        public virtual EntityType EntityType { get; set; }
        
    }

}